# Flask框架
import time
from flask import Flask,render_template,request
import pymysql
app=Flask(__name__)

# 留言板列表
@app.route('/')
def hello():
    # 1.获取留言板数据
    data=model('select * from lyb_online')
    # 2.把数据分配到模板中
    return render_template('index.html',data=data)

# 定义视图，显示留言添加的页面
@app.route('/add')
def add():
    # 显示留言的页面
    return render_template('add.html')

# 定义视图，显示留言更改的页面
@app.route('/change')
def change():
    # 显示留言的页面
    return render_template('change.html')

# 定义视图函数，接受表单数据，完成数据的入库
@app.route('/insert',methods=['POST'])
def insert():
    # 1.接受表单数据
    data=request.form.to_dict()
    # 处理数据
    data['date']=time.strftime('%Y-%m-%d %H:%M:%S')
    # 2.把数据添加入库
    sql=f'insert into lyb_online values(null,"{data["nickname"]}","{data["info"]}","{data["date"]}")'
    res=model(sql)
    # 3.成功后页面跳转到留言列表
    # 判断数据结果
    if res:
        # 跳转到列表页面
        return '<script>alert("留言成功");location.href="/"</script>'
    else:
        # 跳转到添加页面
        return '<script>alert("留言添加失败");location.href="/add"</script>'

# 定义视图函数，接收id，完成数据删除
@app.route('/delete')
def delete():
    # 1.接收id
    id=request.args.get('id')
    # 2.准备sql语句
    sql=f'delete from lyb_online where id={id}'
    # 3.执行删除的sql
    res=model(sql)
    # 4.判断结果进行跳转
    if res:
        # 跳转到列表页面
        return '<script>alert("留言删除成功");location.href="/"</script>'
    else:
        # 跳转到添加页面
        return '<script>alert("留言删除失败");location.href="/"</script>'

# 封装mysql方法
def model(sql):
    db = pymysql.connect(
        host='localhost',
        user='root',
        password='123456',
        database='lyb',
        charset='utf8',
)
    try:
        with db.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
            row=cursor.execute(sql)  # 返回影响行数
            db.commit()  # 数据提交
            data=cursor.fetchall()
            # 返回结果，有数据返回数据，没有数据返回影响行数
            if data:
                return data
            else:
                return row
    except:
        db.rollback()  # 当代码出现错误时回滚
    finally:
        db.close()  # 关闭数据库连接

if __name__ == '__main__':
    app.run(debug=False,host='127.0.0.1')  # 默认端口5000
